#ifndef NW_COSTMODE_H_
#define NW_COSTMODE_H_

#include "nw_client_struct.h"
#include "nw_client_pal.h"

#define NW_COSTMODE_DIR "costmode_dir" 
#define COSTMODE_BASE "gun"

#define NAME_MIANCOSTMODE "main.txt"
#define NAME_BACKCOSTMODE "back.txt"

/*
 计费模型逻辑
 1 系统上电后 先从存储区读取主用和备用两套计费模型到指定变量区  如果没有就为0  变量区的 计费模型信息指针也是空的没有申请堆控件
 2 当有计费模型下发时 和存储区的主用和备用的计费模型id对比 当计费模型id和主用和备用都不一样时  则下发计费模型申请堆空间 备用文件直接删除重新生成 备用模型信息释放 指针重新指向下发的计费模型
 3 每次启动充电的时候检查备用时间是否生效 如果生效 删除主用文件 备用文件改名成主用文件 变量区的主用文件模型信息指针释放 并重新指向备用信息模型信息 然后在复制备用计费模型的头部到主用 就可以清空备用信息变量区了
 
 
 计费模型文件夹目录
                  (枪号 从零开始)
									     ——(gun0_main.txt)
									    |
                   ——-|
									|   |
                  |    ——(gun0_back.txt)
                  |
 costmode_dir--|
                  |
									|
									---gun1-......
*/


struct t_guncostmode//枪的计费模型信息
{
   struct t_down_costmode head ;//计费头部信息
   struct t_costmodemsg *msg;//计费模型信息
};

struct t_cli_costmode
{
	 uint32 gunno;
	 struct t_guncostmode costmode_main;//计费模型信息
	 struct t_guncostmode costmode_back;//计费模型信息
};
void costmode_init(struct t_cli_costmode *mode);
void costmode_change(struct t_cli_costmode *mode);
uint8 costmode_isnotequal(struct t_cli_costmode *code, struct t_down_costmode *head);
uint8 costmode_update(struct t_cli_costmode *cli_mode, struct  t_guncostmode *mode);
void get_costmode(struct t_cli_costmode *cli_mode,uint8 *costmode);

//这四项单价主要在上报报文的时候用  因为每个时段都会单价 有可能不同的尖时段所对应的单价不同
uint32 get_elecpcs(struct t_cli_costmode *cli_mode,uint32 flag);//电费单价
uint32 get_sercepcs(struct t_cli_costmode *cli_mode,uint32 flag);//服务费单价
uint32 get_reservepcs(struct t_cli_costmode *cli_mode,uint32 flag);//预约费单价
uint32 get_positionpcs(struct t_cli_costmode *cli_mode,uint32 flag);//占位费单价

//下面才是主要的订单拿取单价的方法 根据时间获取
uint32 get_elecpcsbytime(struct t_cli_costmode *cli_mode,uint8 min,uint8 sec);//电费单价
uint32 get_servepcsbytime(struct t_cli_costmode *cli_mode,uint8 min,uint8 sec);//服务费单价
uint32 get_reservepcsbytime(struct t_cli_costmode *cli_mode,uint8 min,uint8 sec);//预约费单价
uint32 get_positionpcsbytime(struct t_cli_costmode *cli_mode,uint8 min,uint8 sec);//占位费单价

uint32 get_timeflag(struct t_cli_costmode *cli_mode,uint8 min,uint8 sec);
#endif
















